package com.system.runtai.utils;

import com.aliyun.tea.*;
import com.aliyun.teautil.Common;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;


/**
 * 短信发送工具类
 */
public class SMSUtils {

//	public static final String ACCESS_KEY_ID = "LTAI5tQugNRtW2HEoW2bo6Ux";
//public static final String SECRET = "TnQZpBfNt6PHOjKr1PBKovzSjVjuP5";
	//润泰客户的
//	public static final String ACCESS_KEY_ID = "LTAI5tAg2VNyDVGjyEEu9c5S";
//	public static final String SECRET = "UoMsl8Gk6DcYHfg2FnyUhMTZG73ptG";
	//王森自己的
	public static final String ACCESS_KEY_ID = "LTAI5tLVh3ECbY9cCwVMPbVX";

	public static final String SECRET = "bhm1JtlabL4lRqlGiCpLwxcGTU10LR";


	/**
	 * 使用AK&SK初始化账号Client
	 * @return Client
	 * @throws Exception
	 */
	public static com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
		// 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
		// 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html。
		com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
				// 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
				.setAccessKeyId(System.getenv(ACCESS_KEY_ID))
				// 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
				.setAccessKeySecret(System.getenv(SECRET));
		// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
		config.endpoint = "dysmsapi.aliyuncs.com";
		return new com.aliyun.dysmsapi20170525.Client(config);
	}


//	public static com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
//		// 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考。
//		// 建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378657.html。
//		com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
//				// 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
//				.setAccessKeyId(System.getenv(ACCESS_KEY_ID))
//				// 必填，请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
//				.setAccessKeySecret(System.getenv(SECRET));
//		// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
//		config.endpoint = "dysmsapi.aliyuncs.com";
//		config.userAgent = "Workbench/1.0";
//		return new com.aliyun.dysmsapi20170525.Client(config);
//	}

	public static void main(String[] args_) throws Exception {
		java.util.List<String> args = java.util.Arrays.asList(args_);
		String code = ValidateCodeUtils.generateValidateCode(4).toString();
		com.aliyun.dysmsapi20170525.Client client = SMSUtils.createClient();

		com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
				.setPhoneNumbers("15511241824")
				.setSignName("runtaicloud")
				.setTemplateCode("SMS_278005333")
				.setTemplateParam( "{\"code\":"+"'"+code+"'"+"}");
		com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
		try {
			com.aliyun.dysmsapi20170525.models.SendSmsResponse resp = client.sendSmsWithOptions(sendSmsRequest, runtime);


			System.out.println("resp = " + resp);
			String s = Common.toJSONString(resp);

			System.out.println("s = " + s);
//			com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(resp));
		} catch (TeaException error) {
			// 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
			// 错误 message
			System.out.println(error.getMessage());
			// 诊断地址
			System.out.println(error.getData().get("Recommend"));
			com.aliyun.teautil.Common.assertAsString(error.message);
		} catch (Exception _error) {
			TeaException error = new TeaException(_error.getMessage(), _error);
			// 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
			// 错误 message
			System.out.println(error.getMessage());
			// 诊断地址
			System.out.println(error.getData().get("Recommend"));
			com.aliyun.teautil.Common.assertAsString(error.message);
		}
	}


//	public static void main(String[] args_) throws Exception {
//		java.util.List<String> args = java.util.Arrays.asList(args_);
//		com.aliyun.dysmsapi20170525.Client client = SMSUtils.createClient();
//		String code = ValidateCodeUtils.generateValidateCode(4).toString();
//		com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
//				.setPhoneNumbers("18332859480")
//				.setSignName("runtaicloud")
//				.setTemplateCode("SMS_278005333")
//				.setTemplateParam( "{\"code\":"+"'"+code+"'"+"}");
//		com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
//		try {
//			// 复制代码运行请自行打印 API 的返回值
//			client.sendSmsWithOptions(sendSmsRequest, runtime);
//		} catch (TeaException error) {
//			// 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
//			// 错误 message
//			System.out.println(error.getMessage());
//			// 诊断地址
//			System.out.println(error.getData().get("Recommend"));
//			com.aliyun.teautil.Common.assertAsString(error.message);
//		} catch (Exception _error) {
//			TeaException error = new TeaException(_error.getMessage(), _error);
//			// 此处仅做打印展示，请谨慎对待异常处理，在工程项目中切勿直接忽略异常。
//			// 错误 message
//			System.out.println(error.getMessage());
//			// 诊断地址
//			System.out.println(error.getData().get("Recommend"));
//			com.aliyun.teautil.Common.assertAsString(error.message);
//		}
//	}

	/**
	 * 发送短信
	 * @param signName 签名
	 * @param templateCode 模板
	 * @param phoneNumbers 手机号
	 * @param param 参数
	 */
	public static void sendMessage(String signName, String templateCode,String phoneNumbers,String param){


//		DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tQugNRtW2HEoW2bo6Ux", "TnQZpBfNt6PHOjKr1PBKovzSjVjuP5");
		DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", ACCESS_KEY_ID, SECRET);
		IAcsClient client = new DefaultAcsClient(profile);

		SendSmsRequest request = new SendSmsRequest();
//		request.setSysRegionId("cn-hangzhou");
		request.setPhoneNumbers(phoneNumbers);
		request.setSignName(signName);
		request.setTemplateCode(templateCode);
		request.setTemplateParam("{\"code\":\""+param+"\"}");
		try {
			SendSmsResponse response = client.getAcsResponse(request);
			System.out.println(new Gson().toJson(response));
			System.out.println("短信发送成功");
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			System.out.println("ErrCode:" + e.getErrCode());
			System.out.println("ErrMsg:" + e.getErrMsg());
			System.out.println("RequestId:" + e.getRequestId());
		}
	}
//
//	public static void main(String[] args) {
//		DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", ACCESS_KEY_ID, SECRET);
//
//		IAcsClient client = new DefaultAcsClient(profile);
//
//		SendSmsRequest request = new SendSmsRequest();
//		request.setPhoneNumbers("15511241824");//接收短信的手机号码
//		request.setSignName("runtaicloud");//短信签名名称
//		request.setTemplateCode("SMS_278005333");//短信模板CODE
//		Integer code = new Integer(5656);
//		request.setTemplateParam("您的验证码为："+ code +"，请勿泄露于他人！");//短信模板变量对应的实际值
//
//		try {
//			SendSmsResponse response = client.getAcsResponse(request);
//			System.out.println(new Gson().toJson(response));
//		} catch (ServerException e) {
//			e.printStackTrace();
//		} catch (ClientException e) {
//			System.out.println("ErrCode:" + e.getErrCode());
//			System.out.println("ErrMsg:" + e.getErrMsg());
//			System.out.println("RequestId:" + e.getRequestId());
//		}
//
//	}

}
